package com.mokairui.basic.demo3;

import lombok.extern.slf4j.Slf4j;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author Mokairui
 * @Description 目标：实现服务端可以同时接受多个客户端的Socket通信需求
 *              思路：是服务端每接受一个客户端socket请求对象之后都交给一个独立的线程来处理客户端的数据交互需求
 * @Since 2021/6/27
 */
@Slf4j(topic = "c.Server")
public class Server {
    public static void main(String[] args) {
        try {
            log.debug("==服务端启动==");
            // 1. 定义一个ServerSocket对象进行服务端的端口注册
            ServerSocket serverSocket = new ServerSocket(9999);
            // 2.定义一个死循环，负责不断的接受客户端的Socket连接请求
            while (true) {
                Socket socket = serverSocket.accept();
                // 3.创建一个独立的线程来处理与这个客户端的socket通信
                new Thread(new ServerThreadReader(socket)).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
